R Crawler 1

Miao Chien
10/19

什麼是網路爬蟲(Crawler)

  • 把你平常開瀏覽器查資料的步驟,寫程式讓它自動完成!
  • 大數據的時代,要如何「拿到資料」是最基本的起手式。

爬蟲的原理:模仿人類的行為

目標:找出資料放在哪裡

  1. 找出資料藏在哪個 request 裡

  2. 觀察 request 的內容

  3. 拿取資料

基本流程:觀察、觀察、再觀察

1. 找出資料藏在哪個 request 裡

練習:請用 Chrome 打開批踢踢網頁版

  1. 打開「開發人員工具」:右鍵 > 檢查

  2. 切換到 Network 標籤

  3. 按下 Record network log (確認紅燈亮著)、按下 All

  4. 重新整理網頁

  5. 找出資料藏身在哪一個 Request 裡面

1. 找出資料藏在哪個 request 裡

Requests 很多,找不到怎麼辦?

1. 找出資料藏在哪個 request 裡

  • 關掉 JavaScript:Chrome extension Quick javascript swicher

    • 資料還是跑得出來:(靜態)Page-Render 資料和網頁一起回來

      ⇒找 Doc

      練習

    • 資料跑不出來:(動態)資料是用 JS Ajax 跑出來的

      ⇒找 XHR、JS 或 WS

      練習

  • 猜:望文生義 request, r, q, ……

2. 觀察 request 的內容

2. 觀察 request 的內容

找到資料所在的 request 之後……

第一眼觀察重點:

+ Request URL

+ Request Method (GET/POST/...)

+ Status Code (200/302/404/...)

第二眼觀察重點:

+ Response Headers (location/set-cookie)

+ Request Headers (cookie/referer/user-agent/...)

2. 觀察 request 的內容

用「無痕模式」再一次打開批踢踢網頁版

2. 觀察 request 的內容

轉址到 18 號窗口

2. 觀察 request 的內容

點選已滿 18 歲即成功進入

3. 拿取資料:用瀏覽器拿取資料

適用於比較單純的網站

複習一下:找到資料所在的 request 之後……

第一眼觀察重點:

+ Request URL

+ Request Method (GET/POST/...)

+ Status Code (200/302/404/...)

Request URL:可以修改或串接

  • 通常 URL 中就有變數藏在裡面

  • URL?var1=val1&var2=val2 …

【修改 URL 變數】練習看看:

 + 2330台積電 ⇒ 2498宏達電

   https://tw.stock.yahoo.com/d/s/major_2330.html

 + 批踢踢網頁版首頁 ⇒  上一頁

   https://www.ptt.cc/bbs/Gossiping/index.html

Request URL:可以修改或串接

  • 通常 URL 中就有變數藏在裡面

  • URL?var1=val1&var2=val2 …

【串接 URL】練習看看

 + 5284 公車路線

 http://5284.taipei.gov.tw/TextSearch.aspx

 + 公開資訊觀測站

 http://mops.twse.com.tw/mops/web/t51sb01

Request Method

GET (with query strings)

 + 可以直接以網址拿資料

 + 注意網址有時候會有參數

POST

 + 除了提交網址之外,還要提交參數才能拿資料

 + 中文要注意編碼問題(特別是 Windows ) 

3. 拿取資料:用輔助工具拿取資料

Advanced REST client

特別用在須要通行證的網站

範例:再用八卦板當例子

練習:

 + Mobile01 論壇

   http://www.mobile01.com/topiclist.php?f=520

 + 漫畫

   http://tw.ikanman.com/comic/1128/9771.html#p=3

拿取資料:Data Parser

要如何從 Data Page 中取出 Data?

⇒用 DOM Selector (CSS/XPath)

HTML 的樹狀結構與 DOM Selector

HTML 的樹狀結構與 DOM Selector

HTML 的樹狀結構與 DOM Selector

DOM Selector: CSS Selector

安裝 Chrome extension SelectorGadget

範例:pchome商品

Chrome Console:

document.querySelectorAll("CSS Selector")

DOM Selector: XPath Selector

安裝 Chrome extension XPath Helper

範例:露天拍賣

Chrome Console:

$x("XPath Selector")

HOMEWORK

請安裝:

HOMEWORK

對 R 不熟的人請閱讀:

  • Quick-R:data type

  • (中文)醫學統計與 R :第二章第三章

    • Note: 特別注意 vector, data frame, list 的使用方式

HOMEWORK

有空的人可以: